Previous Book Contents Book Index Next

Inside Macintosh: 3D Graphics Programming With QuickDraw 3D /
Chapter 4 - Geometric Objects / Geometric Objects Reference
Data Structures


NURB Patches

A NURB patch is a surface defined by ratios of B-spline surfaces, which are three-dimensional analogs of B-spline curves. A NURB patch is defined by the TQ3NURBPatchData data type. See "Creating and Editing NURB Patches," beginning on page 4-166 for a description of the routines you can use to create and edit NURB patches. Figure 4-19 shows a NURB patch.

Figure 4-19 A NURB patch

typedef struct TQ3NURBPatchData {
   unsigned long              uOrder;
   unsigned long              vOrder;
   unsigned long              numRows;
   unsigned long              numColumns;
   TQ3RationalPoint4D         *controlPoints;
   float                      *uKnots;
   float                      *vKnots;
   unsigned long              numTrimLoops;
   TQ3NURBPatchTrimLoopData   *trimLoops;
   TQ3AttributeSet            patchAttributeSet;
} TQ3NURBPatchData;
Field Description
uOrder
The order of the NURB patch in the u parametric direction. For NURB patches defined by ratios of B-spline polynomials that are cubic in u, the order is 4. In general, the order of a NURB patch defined by polynomial equations in which u is of degree n is n+1. The value in this field must be greater than 1.
vOrder
The order of the NURB patch in the v parametric direction. For NURB patches defined by ratios of B-spline polynomials that are cubic in v, the order is 4. In general, the order of a NURB patch defined by polynomial equations in which v is of degree n is n+1. The value in this field must be greater than 1.
numRows
The number of control points in the u parametric direction. The value of this field must be greater than 1.
numColumns
The number of control points in the v parametric direction. The value of this field must be greater than 1.
controlPoints
A pointer to an array of rational four-dimensional control points that define the NURB patch. The first control point in the array is the lower-left corner of the NURB patch. The control points are listed in a rectangular order, first in the direction of increasing u and then in the direction of increasing v. The number of elements in this array is the product of the values in the numRows and numColumns fields.
uKnots
A pointer to an array of knots in the u parametric direction that define the NURB curve. The number of u knots in a NURB curve is the sum of the values in the uOrder and numRows fields. The values in this array must be nondecreasing (but successive values may be equal).
vKnots
A pointer to an array of knots in the v parametric direction that define the NURB curve. The number of v knots in a NURB curve is the sum of the values in the vOrder and numColumns fields. The values in this array must be nondecreasing (but successive values may be equal).
numTrimLoops
The number of trim loops in the array pointed to by the trimLoops field. Currently this field should contain the value 0.
trimLoops
A pointer to an array of trim loop data structures that define the loops used to trim a NURB patch. See below for the structure of the trim loop data structure. Currently this field should contain the value NULL.
patchAttributeSet
A set of attributes for the NURB patch. The value in this field is NULL if no NURB patch attributes are defined.
A trim loop data structure is defined by the TQ3NURBPatchTrimLoopData data type.

typedef struct TQ3NURBPatchTrimLoopData {
   unsigned long                       numTrimCurves;
   TQ3NURBPatchTrimCurveData           *trimCurves;
} TQ3NURBPatchTrimLoopData;
Field Description
numTrimCurves
The number of trim curves in the array pointed to by the trimCurves field.
trimCurves
A pointer to an array of trim curve data structures that define the curves used to trim a NURB patch. See below for the structure of the trim curve data structure.
A trim curve data structure is defined by the TQ3NURBPatchTrimCurveData data type.

typedef struct TQ3NURBPatchTrimCurveData {
   unsigned long                       order;
   unsigned long                       numPoints;
   TQ3RationalPoint3D                  *controlPoints;
   float                               *knots;
} TQ3NURBPatchTrimCurveData;
Field Description
order
The order of the NURB trim curve. In general, the order of a NURB trim curve defined by polynomial equations of degree n is n+1. The value in this field must be greater than 1.
numPoints
The number of control points that define the NURB trim curve. The value in this field must be greater than 2.
controlPoints
A pointer to an array of three-dimensional rational control points that define the NURB trim curve.
knots
A pointer to an array of knots that define the NURB trim curve. The number of knots in a NURB trim curve is the sum of the values in the order and numPoints fields. The values in this array must be nondecreasing (but successive values may be equal).

Previous Book Contents Book Index Next

© Apple Computer, Inc.
11 JUL 1996